package com.banmao.algorithm.No301To400.No350;

import java.util.ArrayList;

public class Solution1 {

    public int[] intersect(int[] nums1, int[] nums2) {

        // 用两个数组处理
        // 细节点：元素小于等于1000，因此长度应该为1001
        int[] arr1 = new int[1001];
        int[] arr2 = new int[1001];

        // 下标是元素，值是次数
        for (int i : nums1) {
            arr1[i]++;
        }

        for (int i : nums2) {
            arr2[i]++;
        }

        ArrayList<Integer> list = new ArrayList<Integer>();
        // 同时遍历两个数组
        for (int i = 0; i < arr1.length; i++) {
            if(arr1[i] > 0 && arr2[i] > 0) {
                // 两个数组的同个元素都大于0时，表示这个元素同时出现在两个数组中
                // 选择次数小的那个，进行遍历插值
                int min = Math.min(arr1[i], arr2[i]);
                for (int j = 0; j < min; j++) {
                    list.add(i);
                }

            }
        }

        // 将List转成数组
        int[] res = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            res[i] = list.get(i);
        }

        return res;
    }

}
